#ifndef CONSTRAINT_H
#define CONSTRAINT_H

#include <string>

using namespace std;

/*
    Class: TableConstraint.
    Abstract class to extend by all kind of default table constraints.
*/
class TableConstraint
{
    /* Section: public */
    public:
        /*
            Destructor: Default destructor.
            Destroy the object.
        */
        virtual ~TableConstraint();

        /*
            Method: ToString
            Returns:
                A string representation of the constraint. It must be implemented by subclasses.
        */
        virtual string toString() = 0;

        /*
            Method: Clone
            Returns:
                A pointer to a clone of the TableConstraint.
        */
        virtual TableConstraint * clone() = 0;


    /* Section: protected */
    protected:
        /*
            Class: Default constructor.
            Initializes the object.
        */
        TableConstraint();
};

#endif // CONSTRAINT_H
